package com.sky.controller.admin.statistics;

import com.sky.dto.BookInventoryStatusDTO;
import com.sky.result.Result;
import com.sky.service.BookInventoryStatisticsService;
import com.sky.vo.BookInventoryStatusVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.format.annotation.DateTimeFormat;
import org.springframework.web.bind.annotation.*;

import java.time.LocalDate;

/**
 * 图书库存统计相关接口
 * 该Controller主要用于处理图书库存统计相关的请求，包括：
 * 1. 获取图书库存状态统计信息
 * 2. 分析在库和借出图书的数量及占比
 * 3. 支持按时间范围筛选统计数据
 */
@RestController
@RequestMapping("/admin/statistics/inventory")
@Slf4j
public class BookInventoryStatisticsController {

    @Autowired
    private BookInventoryStatisticsService bookInventoryStatisticsService;

    /**
     * 获取图书库存状态统计信息
     * 
     * @param startDate 统计开始日期，格式：yyyy-MM-dd，可选参数
     * @param endDate 统计结束日期，格式：yyyy-MM-dd，可选参数
     * @return 返回包含以下信息的统计结果：
     *         - 总藏书量
     *         - 在库图书数量及占比
     *         - 借出图书数量及占比
     * 
     * 注意事项：
     * 1. 日期参数必须严格遵循yyyy-MM-dd格式
     * 2. 如果不提供日期参数，则统计所有时间段的数据
     * 3. 百分比会保留一位小数
     */
    @GetMapping("/status")
    public Result<BookInventoryStatusVO> getInventoryStatus(
            @DateTimeFormat(pattern = "yyyy-MM-dd") @RequestParam(required = false) LocalDate startDate,
            @DateTimeFormat(pattern = "yyyy-MM-dd") @RequestParam(required = false) LocalDate endDate) {
        
        BookInventoryStatusDTO dto = new BookInventoryStatusDTO();
        dto.setStartDate(startDate);
        dto.setEndDate(endDate);
        
        log.info("获取图书库存状态统计：startDate={}, endDate={}", startDate, endDate);
        BookInventoryStatusVO statusVO = bookInventoryStatisticsService.getInventoryStatus(dto);
        return Result.success(statusVO);
    }
} 